package top.alanshelby.utils;

import org.springframework.aop.MethodMatcher;

import java.lang.reflect.Method;

public class EatMethodMatcher implements MethodMatcher {

    /**
     * 监控接口比如BaseService，没有重载方法，每一个方法名称都是唯一的，
     * 此时采用 static 检测方式，只根据方法名称来进行判断，如果有重载方法，
     * 可以使用下方的 matches() 方法
     * 业务：只想对 Person 类中的 eat() 方法提供织入
     *
     * @param method      接口中的某一个方法
     * @param targetClass 接口中的实现类
     * @return
     */
    @Override
    public boolean matches(Method method, Class<?> targetClass) {
        String methodName = method.getName();
        if ("eat".equals(methodName)) {
            return true;
        }
        return false;
    }

    @Override
    public boolean isRuntime() {
        return false;
    }

    @Override
    public boolean matches(Method method, Class<?> targetClass, Object... args) {
        return false;
    }
}
